package com.niit.chat.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.time.LocalDateTime;

/**
 * 消息实体类
 * 对应数据库表 tb_message
 */
@Data
@TableName("tb_message")
public class Message {
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 发送者ID
     */
    private Long senderId;
    
    /**
     * 接收者ID
     */
    private Long receiverId;
    
    /**
     * 消息内容
     */
    private String content;
    
    /**
     * 消息类型
     * 0: 文本消息
     * 1: 图片消息
     * 2: 文件消息
     */
    private Integer type;
    
    /**
     * 是否已读
     * 0: 未读
     * 1: 已读
     */
    @TableField("is_read")
    private Integer isRead;
    
    /**
     * 发送时间
     * 自动填充创建时间
     */
    @TableField(value = "send_date", fill = FieldFill.INSERT)
    private LocalDateTime sendDate;
    
    /**
     * 更新时间
     * 自动填充更新时间
     */
    @TableField(value = "update_date", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateDate;
    
    /**
     * 逻辑删除标记
     * 0: 未删除
     * 1: 已删除
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
    
    /**
     * 版本号
     * 用于乐观锁
     */
    @Version
    @TableField("version")
    private Integer version;

    /**
     * 是否撤回
     * 0: 未撤回
     * 1: 已撤回
     */
    @TableField("is_recalled")
    private Integer isRecalled;

    /**
     * 发送者是否删除
     * 0: 未删除
     * 1: 已删除
     */
    @TableField("deleted_by_sender")
    private Integer deletedBySender;

    /**
     * 接收者是否删除
     * 0: 未删除
     * 1: 已删除
     */
    @TableField("deleted_by_receiver")
    private Integer deletedByReceiver;

    /**
     * 媒体文件URL（图片/视频/文件）
     */
    @TableField("media_url")
    private String mediaUrl;
} 